package com.tarjetanaranja.soportenegocio.crm.asisntenteca.web.controladores;

import java.io.Serializable;
import java.util.ArrayList;

import javax.persistence.EntityManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.tarjetanaranja.soportenegocio.crm.asisntenteca.negocio.dominio.Noticia;
import com.tarjetanaranja.soportenegocio.crm.asisntenteca.negocio.excepciones.AccesoDatosException;
import com.tarjetanaranja.soportenegocio.crm.asisntenteca.negocio.excepciones.ConsistenciaDatosException;
import com.tarjetanaranja.soportenegocio.crm.asisntenteca.negocio.servicios.AdministradorInsert;
import com.tarjetanaranja.soportenegocio.crm.asisntenteca.negocio.servicios.AdministradorPrueba;
import com.tarjetanaranja.soportenegocio.crm.asisntenteca.negocio.servicios.servicioGenerico.AdministradorPersistente;
import com.tarjetanaranja.soportenegocio.crm.asisntenteca.negocio.util.Filtro;
import com.tarjetanaranja.soportenegocio.crm.asisntenteca.negocio.util.Order;
import com.tarjetanaranja.soportenegocio.crm.asisntenteca.negocio.util.OrderBy;
import com.tarjetanaranja.soportenegocio.crm.asisntenteca.negocio.util.OrderMethod;
import com.tarjetanaranja.soportenegocio.crm.asisntenteca.web.controladores.controladorGenerico.ControladorPersistente;

@Controller
public class ControladorPrueba extends ControladorPersistente<Integer, Noticia> {
	@Autowired
    AdministradorPrueba administradorPrueba;
	@Autowired
	AdministradorInsert administradorInsert; 
	
	@RequestMapping("/prueba")
	public ModelAndView prueba() {
		
		
		 EntityManager em = administradorPrueba.getEntityManager();
		 
		try {
			//return super.agregar("{tituloNoticia:'titulo10', descripcionNoticia:'descripcion10', aliasNoticia:'alias10',visitas:'150'}", null);
			//return super.editar("{idNoticia:'35', tituloNoticia:'titulo10Modif', descripcionNoticia:'descripcion10Modf', aliasNoticia:'alias10Modf',visitas:'150'}", null);
			//return super.eliminar(36);
			
			Filtro filtro = new Filtro();
			filtro.agregarValor("tituloNoticia", "titulo");
			OrderBy orderBy = new OrderBy();
			Order order = new Order("idNoticia", OrderMethod.DESC);
			Order order1 = new Order("descripcionNoticia", OrderMethod.DESC);
			
			orderBy.agregarOrder(order);
			orderBy.agregarOrder(order1);
			
			//return super.listar();
			//return super.listar(filtro);
			//return super.listar(0, 10, filtro);
			//return super.listar(filtro, orderBy);
			//return super.buscarPorId(41);
			//return super.listar(0, 10);
			//return super.listar(0, 10, orderBy);
			//return super.listar(orderBy);
			//return super.listar(0, 15, filtro, orderBy);
			return listar(null);

		} catch (AccesoDatosException e) {
			e.printStackTrace();
		}
		catch (ConsistenciaDatosException e) {
			e.printStackTrace();
		}
		
		//prueba del internalResourceViewResolver
		System.out.println("ingreso al metodo");
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("prueba");
		modelAndView.addObject("message", "Hello World");
		return modelAndView;
	}

	@Override
	protected AdministradorPersistente<Integer, Noticia> obtenerAdministrador() {
		return administradorPrueba;
	}

	@Override
	public Class<? extends Serializable> getClaseDominio() {
		return Noticia.class;
	}

}
